package com.ruoyi.video.service;

import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.video.domain.BusVideoInfo;

import java.util.List;

public interface IVideoInfoService {

    /**
     * 查询视频信息
     *
     * @param videoId 视频ID
     * @return 视频信息
     */
    BusVideoInfo selectVideoById(Long videoId);

    /**
     * 查询视频列表
     *
     * @param videoIdList 视频ID列表
     * @return 视频列表
     */
    List<BusVideoInfo> selectVideoByIdList(List<Long> videoIdList);

    /**
     * 查询视频列表
     *
     * @param videoInfo 视频信息
     * @return 视频集合
     */
    List<BusVideoInfo> selectVideoList(BusVideoInfo videoInfo);

    /**
     * 分组查询视频列表前5名
     *
     * @return 视频集合
     */
    List<BusVideoInfo> selectVideoListGroupByTypeLimit5();

    /**
     * 格式化视频集合
     *
     * @param videoInfoList 视频信息列表
     * @param videoTagDictList 视频标签列表
     * @param videoTypeDictList 视频类型列表
     * @return 视频集合
     */
    void formatVideoList(List<BusVideoInfo> videoInfoList, List<SysDictData> videoTagDictList, List<SysDictData> videoTypeDictList);

    /**
     * 新增视频
     *
     * @param videoInfo 视频信息
     * @return 结果
     */
    int insertVideo(BusVideoInfo videoInfo);

    /**
     * 修改视频
     *
     * @param videoInfo 视频信息
     * @return 结果
     */
    int updateVideo(BusVideoInfo videoInfo);

    /**
     * 删除视频信息
     *
     * @param videoId 视频ID
     * @return 结果
     */
    int deleteVideoById(Long videoId);

    /**
     * 批量删除视频信息
     *
     * @param videoIds 需要删除的视频ID
     * @return 结果
     */
    int deleteVideoByIds(Long[] videoIds);

}

